{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "def AMPD(data):\n",
    "    \"\"\"\n",
    "    实现AMPD算法\n",
    "    :param data: 1-D numpy.ndarray \n",
    "    :return: 波峰所在索引值的列表\n",
    "    \"\"\"\n",
    "    p_data = np.zeros_like(data, dtype=np.int32)\n",
    "    count = data.shape[0]\n",
    "    arr_rowsum = []\n",
    "    for k in range(1, count // 2 + 1):\n",
    "        row_sum = 0\n",
    "        for i in range(k, count - k):\n",
    "            if data[i] > data[i - k] and data[i] > data[i + k]:\n",
    "                row_sum -= 1\n",
    "        arr_rowsum.append(row_sum)\n",
    "    min_index = np.argmin(arr_rowsum)\n",
    "    max_window_length = min_index\n",
    "    for k in range(1, max_window_length + 1):\n",
    "        for i in range(k, count - k):\n",
    "            if data[i] > data[i - k] and data[i] > data[i + k]:\n",
    "                p_data[i] += 1\n",
    "    return np.where(p_data == max_window_length)[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "def sim_data2():\n",
    "    N = 1000\n",
    "    x = np.linspace(0, 200, N)\n",
    "    y = 2 * np.cos(2 * np.pi * 300 * x) \\\n",
    "        + 5 * np.sin(2 * np.pi * 100 * x) \\\n",
    "        + 4 * np.random.randn(N)\n",
    "    return y\n",
    "\n",
    "def sim_data():\n",
    "    from kds_util.mysql_database import PyMySql\n",
    "    ip = \"127.0.0.1\"\n",
    "    mysql = PyMySql(f\"mysql+pymysql://root:Zhao123@Lu123@{ip}:3306/kline?charset=utf8\")\n",
    "    sql = \"SELECT close, datetime from (SELECT close,datetime from tbl_code_rb_all\"\\\n",
    "        \" where code='rb2310' and period=5 and datetime<='2023-06-13 10:30:00' ORDER BY datetime desc LIMIT 200)\"\\\n",
    "        \" AS subquery ORDER BY datetime asc\"\n",
    "    items = mysql.query(sql)\n",
    "    arr = []\n",
    "    for item in items:\n",
    "        arr.append(float(item[0]))\n",
    "    data_array = np.array(arr)\n",
    "    return data_array\n",
    "        \n",
    "\n",
    "\n",
    "def vis():\n",
    "    y = sim_data()\n",
    "    plt.plot(range(len(y)), y)\n",
    "    px = AMPD(y)\n",
    "    plt.scatter(px, y[px], color=\"red\")\n",
    "\n",
    "    plt.show()\n",
    "\n",
    "vis()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[3, 5]\n"
     ]
    }
   ],
   "source": [
    "a = [3, 5, 7]\n",
    "a.pop()\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   Column1\n",
      "0      3.0\n",
      "1      5.0\n",
      "2      7.0\n",
      "3      9.0\n",
      "4     10.0\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "a = [3, 5, 7, 9, 10.0]\n",
    "df = pd.DataFrame(a, columns=['Column1'])\n",
    "print(df)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from datetime import datetime\n",
    "datetime.strptime(\"2023-06-21\", \"%Y-%m-%d\").weekday()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[('21:01', '23:00'), ('09:01', '10:15'), ('10:31', '11:30'), ('13:31', '15:00')]\n"
     ]
    }
   ],
   "source": [
    "time_str = \"[(2101,2300),(901,1015),(1031,1130),(1331,1500)]\"\n",
    "time_list = eval(time_str)  # 将字符串转换成列表\n",
    "time_periods = []  # 存储时间段的列表\n",
    "for start, end in time_list:\n",
    "    start_hour, start_minute = divmod(start, 100)\n",
    "    end_hour, end_minute = divmod(end, 100)\n",
    "    time_periods.append((f\"{start_hour:02d}:{start_minute:02d}\", f\"{end_hour:02d}:{end_minute:02d}\"))\n",
    "print(time_periods)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2101, 2102, 2103, 2104, 2105, 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117, 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127, 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2214, 2215, 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254, 2255, 2256, 2257, 2258, 2259, 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2307, 2308, 2309, 2310, 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2330, 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2338, 2339, 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2350, 2351, 2352, 2353, 2354, 2355, 2356, 2357, 2358, 2359, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1442, 1443, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 1451, 1452, 1453, 1454, 1455, 1456, 1457, 1458, 1459]\n"
     ]
    }
   ],
   "source": [
    "from datetime import datetime, timedelta\n",
    "time_str = \"[(2101,230),(901,1015),(1031,1130),(1331,1500)]\"\n",
    "time_list = eval(time_str)  # 将字符串转换成列表\n",
    "dt = datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)\n",
    "arr = []\n",
    "for start, end in time_list:\n",
    "    \n",
    "    dt1 = datetime.now().replace(hour=start//100, minute=start%100, second=0, microsecond=0)\n",
    "    dt2 = datetime.now().replace(hour=end//100, minute=end%100, second=0, microsecond=0)\n",
    "    if start > end:\n",
    "        dt2 = dt2 + timedelta(days=1)\n",
    "    while dt1 < dt2:\n",
    "        arr.append(int(dt1.strftime(\"%H%M\")))\n",
    "        dt1 += timedelta(minutes=1)\n",
    "        \n",
    "print(arr)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5294117647058824"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(1673-1664)/(1673-1656)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from datetime import datetime\n",
    "dt = datetime.now()\n",
    "dt.hour * 100 + dt.minute"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[['SA309', 1567], ['SA308', 1294], ['SA307', 900], ['SA306', 500]]\n"
     ]
    }
   ],
   "source": [
    "a = [[\"SA308\",1294],[\"SA309\",1567],[\"SA307\",900],[\"SA306\",500]]\n",
    "\n",
    "# 使用sort方法进行排序，key参数设定为取每个子列表的第二个元素（即数据值）\n",
    "# reverse参数设为True，实现降序排序（数据值最大的在前）\n",
    "a.sort(key=lambda x: x[1], reverse=True)\n",
    "\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[3, 5, 7]\n"
     ]
    }
   ],
   "source": [
    "a = [3, 5, 7]\n",
    "print(a[:20])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "72"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(\"SELECT * from tbl_bk_gangtiebankuai WHERE datetime='2023-06-21 23:00:00'\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Bk\n"
     ]
    }
   ],
   "source": [
    "bk = \"Bk\"\n",
    "bk.lower()\n",
    "print(bk)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'ag'"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import string\n",
    "\"ag2305\".rstrip(string.digits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dict_values([])\n"
     ]
    }
   ],
   "source": [
    "# 假设我们有以下字典\n",
    "my_dict = {}\n",
    "\n",
    "\n",
    "\n",
    "print(my_dict.values())  # 输出: 'value1'\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'b': -1, 'a': -2, 'c': -3, 'e': -4, 'd': -5}\n",
      "{'b': -1, 'a': -2, 'c': -3, 'e': -4, 'd': -5}\n"
     ]
    }
   ],
   "source": [
    "dict1 = {'a': -2, 'b': -1, 'c': -3, 'd': -5, 'e': -4}\n",
    "d2 = sorted(dict1.items(), key=lambda item: item[1], reverse=True)\n",
    "d = {d2[i][0]:d2[i][1] for i in range(5)}\n",
    "print(d)\n",
    "print(d)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1\n",
      "9\n"
     ]
    }
   ],
   "source": [
    "print(round(7/57 * 10))\n",
    "print(round(50/57 * 10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'21:01:00'"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\"2023-05-09 21:01:00\"[-8:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[no: 1,bi:0, no: 2,bi:0, no: 3,bi:0, no: 4,bi:0]\n",
      "cx: no: 4,bi:0, cxl: no: 1,bi:0\n"
     ]
    }
   ],
   "source": [
    "class CKX:\n",
    "    def __init__(self, no, bi):\n",
    "        self.no = no\n",
    "        self.bi = bi\n",
    "    \n",
    "    def __str__(self):\n",
    "        return f\"no: {self.no},bi:{self.bi}\"\n",
    "    \n",
    "    def __repr__(self):\n",
    "        return self.__str__()\n",
    "    \n",
    "bi_arr = [CKX(1, 0), CKX(2, 0), CKX(3, 0), CKX(4, 0)]\n",
    "print(bi_arr)\n",
    "cx = bi_arr[0]\n",
    "cxl = cx\n",
    "cx = bi_arr[3]\n",
    "print(f\"cx: {cx}, cxl: {cxl}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "d = {'niL6': -8.27, 'luL6': -7.68, 'fuL6': -7.43, 'scL6': -7.11, 'agL6': -4.47}\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ag agL9\n"
     ]
    }
   ],
   "source": [
    "l9 = \"agL9\"\n",
    "breed = l9.rstrip(\"L9\")\n",
    "print(breed, l9)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "pydev3.11",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.16"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
